/// <summary> /// web.config based application_start /// </summary> protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); ConfigurationBasedIdentityConfig.ConfigureIdentity(); }
public class ConfigurationBasedIdentityConfig { public static string AudienceUri { get; set; } public static string Realm { get; private set; } public static void ConfigureIdentity() { Realm = ConfigurationManager.AppSettings["ida:Realm"]; AudienceUri = ConfigurationManager.AppSettings["ida:AudienceUri"]; AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.Name; //tells the sts via querystring what login modes to accept FederatedAuthentication .FederationConfiguration .WsFederationConfiguration .SignInQueryString = string.Format("authModes={0}", ConfigurationManager.AppSettings.Get("authModes")); //Prepare a/r claims MyActionResourceClaimAuthorizationManager claimsAuthManager = FederatedAuthentication .FederationConfiguration .IdentityConfiguration.ClaimsAuthorizationManager as MyActionResourceClaimAuthorizationManager; if (claimsAuthManager == null) throw new ConfigurationErrorsException("Missing Configuration entry for MyActionResourceClaimAuthorizationManager"); claimsAuthManager.LoadActionResourceClaims(); if (!String.IsNullOrEmpty(AudienceUri)) { UpdateAudience(); } if (!String.IsNullOrEmpty(Realm)) { UpdateRealm(); } } /// <summary> /// /// </summary> private static void UpdateAudience() { int count = FederatedAuthentication.FederationConfiguration.IdentityConfiguration .AudienceRestriction.AllowedAudienceUris.Count( uri => String.Equals(uri.OriginalString, AudienceUri, StringComparison.OrdinalIgnoreCase)); if (count == 0) { FederatedAuthentication.FederationConfiguration.IdentityConfiguration .AudienceRestriction.AllowedAudienceUris.Add(new Uri(ConfigurationBasedIdentityConfig.AudienceUri)); } } /// <summary> /// /// </summary> private static void UpdateRealm() { FederatedAuthentication.WSFederationAuthenticationModule.Realm = Realm; } } }